package com.lp.multi.thread.example04;

/**
 * @author: lp
 * @create: 2021-06-22 9:59
 * @description:
 * 守护线程：
 * 1.线程分为用户线程和守护线程；
 * 2.虚拟机必须保证用户线程执行完毕；
 * 3.虚拟机不用等待守护线程执行完毕；
 * 常见用户线程：main
 * 常见守护线程：gc
 */
public class DeamonThreadTest {
    public static void main(String[] args) {
        DemonThread demonThread = new DemonThread();
        Thread thread = new Thread(demonThread, "守护进程");
        //默认线程不是守护线程
        thread.setDaemon(true);
        //默认优先级是5，值只能是1到10整数
        thread.setPriority(Thread.NORM_PRIORITY);
        thread.start();

        new Thread(new UserThread(),"userThread").start();

    }
}

/**
 * 虚拟机不会等守护线程执行完成后关闭
 */
class DemonThread implements Runnable{

    @Override
    public void run() {
        while (true){
            System.out.println(Thread.currentThread().getName()+"：I'm God!");
        }
    }
}

/**
 * 虚拟机必须保证用户线程执行完毕
 */
class UserThread implements Runnable{

    @Override
    public void run() {
        for(int i=0;i<36500;i++){
            System.out.println(Thread.currentThread().getName()+"：过好每一天！");
        }
        System.out.println(Thread.currentThread().getName()+"：还想活500年！");
    }
}
